from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox
from PyQt5.QtGui import QPixmap
from views.ui.QT_MainWindow import Ui_MainWindow  # 导入Ui_MainWindow类(QT设计师创建)
from Source_Choose import MySourceChoose  # 导入 MySourceChoose 类(python代码)
import sys
from datetime import datetime  # 导入 datetime 库

#图片路径
img_relative_path = './views/image/'    #start.py用
# img_relative_path = './image/'  #该文件用

class MyWinUtils:
    def __init__(self):
        self.img = [f'{img_relative_path}1.jpg', f'{img_relative_path}2.jpg', f'{img_relative_path}3.jpg']
        self.img_index = 0
        self.pix = 0
        self.click_button4_Flag = False  # 初始化点击 pushButton_4 标志位

        self.source_choose = MySourceChoose()  # 实例化 MySourceChoose 类

class MyMainWindow(QMainWindow, Ui_MainWindow): # 继承 QMainWindow类和 Ui_MainWindow界面类
    def __init__(self, parent=None):
        super(MyMainWindow, self).__init__(parent)  # 初始化父类
        self.setupUi(self)  # 继承 Ui_MainWindow 界面类

        # self.treeWidget.itemClicked.connect(self.click_treeWidget)  # 连接 treeWidget 点击信号
        self.treeWidget.itemDoubleClicked.connect(self.click_treeWidget)  # 连接 treeWidget 双击信号

        self.util = MyWinUtils()  # 实例化 Utils 工具类

        self.stackedWidget_Index = 0  # 初始化 stackedWidget 索引
        self.stackedWidget.setCurrentIndex(self.stackedWidget_Index)  # 默认界面0

    def click_pushButton_1(self):  # 点击 pushButton_1 触发
        self.stackedWidget_Index = 0
        self.stackedWidget.setCurrentIndex(self.stackedWidget_Index)  # 切换0界面

    def click_pushButton_2(self):  # 点击 pushButton_2 触发
        self.lineEdit_2.setText("click_pushButton_2")

        self.stackedWidget_Index = 1
        self.stackedWidget.setCurrentIndex(self.stackedWidget_Index)  # 切换1界面

    def click_pushButton_3(self):  # 点击 pushButton_3 触发
        nowDate = datetime.now().strftime("%Y-%m-%d")  # 获取当前日期 "2025-04-22"
        nowTime = datetime.now().strftime("%H:%M:%S")  # 获取当前时间 "15:00:00"
        if self.checkBox_4.isChecked() == False:    # 未选中 checkBox_4
            self.lineEdit_1.setText("Current date: {}".format(nowDate))  # 显示日期
            self.lineEdit_2.setText("Current time: {}".format(nowTime))  # 显示时间
            self.lineEdit_3.setText("C_Code of GUI by PyQt5")  #
        else:
            self.lineEdit_1.clear()  # 清空日期
            self.lineEdit_2.setText("Current time: {}".format(nowTime))  # 显示时间
            self.lineEdit_3.clear()  # 清空显示信息

        self.stackedWidget_Index = 2
        self.stackedWidget.setCurrentIndex(self.stackedWidget_Index)  # 切换2界面

    def click_pushButton_4(self):  # 点击 pushButton_4 触发

        if self.stackedWidget_Index < 2:  # 索引小于2
            self.stackedWidget_Index += 1  # 索引加1
        else:
            self.stackedWidget_Index = 0  # 索引归零

        self.stackedWidget.setCurrentIndex(self.stackedWidget_Index)  # 切换0-2界面

    def triggered_QY(self):  # 动作 QY 触发
        QMessageBox.about(self, "QY","""QY""")


    def click_pushButton_Before(self):  # 点击 pushButton_Before 触发

        self.util.pix = QPixmap(f'{self.util.img[self.util.img_index]}')  # 加载图片
        self.label_image.setPixmap(self.util.pix)  # 显示图片

        if self.util.img_index > 0:  # 图片索引超出范围
            self.util.img_index -= 1  # 图片索引减1
        else:
            self.util.img_index = len(self.util.img)-1 # 图片索引最大值

    def click_pushButton_Next(self):  # 点击 pushButton_Next 触发

        self.util.pix = QPixmap(f'{self.util.img[self.util.img_index]}')  # 加载图片
        self.label_image.setPixmap(self.util.pix)  # 显示图片

        if self.util.img_index < len(self.util.img)-1:  # 图片索引超出范围
            self.util.img_index += 1  # 图片索引加1
        else:
            self.util.img_index = 0  # 图片索引归零

    def click_pushButton_Return(self):  # 点击 pushButton_Return 触发
        self.util.img_index = 0  # 图片索引归零
        self.label_image.clear()  # 清空显示图片

    def click_treeWidget(self, item):
        item = self.treeWidget.currentItem()  # 获取当前 treeWidget 点击项

        if item.text(0) == "表格":  # 判断点击项是否为 表格
            self.stackedWidget_Index = 2  # 切换表格界面
        elif item.text(0) == "图片显示":  # 判断点击项是否为 图片
            self.stackedWidget_Index = 0  # 切换图片界面
        elif item.text(0) == "空白":  # 判断点击项是否为 图片
            self.stackedWidget_Index = 1  # 切换空白界面
        else:
            self.stackedWidget_Index = 3  # 切换源码界面
            self.util.source_choose.choose_source(item.text(0))  # 处理源码点击判断
            if self.util.source_choose.source_all:  # 判断是否有源码
                self.textEdit_Source.clear()  # 清空显示源码
                self.textEdit_Source.append(self.util.source_choose.source_all[0:1000000])  # 显示源码

        self.stackedWidget.setCurrentIndex(self.stackedWidget_Index)  # 显示界面



def Window_Main():
    app = QApplication(sys.argv)  # 在 QApplication 方法中使用，创建应用程序对象
    myWin = MyMainWindow()  # 实例化 MyMainWindow 类，创建主窗口
    myWin.show()  # 在桌面显示控件 myWin
    sys.exit(app.exec_())  # 结束进程，退出程序

# if __name__ == '__main__':
#     app = QApplication(sys.argv)  # 在 QApplication 方法中使用，创建应用程序对象
#     myWin = MyMainWindow()  # 实例化 MyMainWindow 类，创建主窗口
#     myWin.show()  # 在桌面显示控件 myWin
#     sys.exit(app.exec_())  # 结束进程，退出程序
